home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
C_BAR1.ARJ
/
BAR.C
next >
Wrap
C/C++ Source or Header
|
1992-02-27
|
2KB
|
68 lines
/*
* bar - print barcode, 3-of-9, external printer interface
* written 1987 David J. Rodman
* Paradise Technology, Inc.
* Compuserve 70007,1545
* (808) 326-9556
* This code is placed into the public domain. Have at it.
*/
#include <stdio.h>
int res = 2; /* resolution, horizontal */
int depth = 4; /* lines deep to print pattern */
int lineno;
#define BFSIZ 512
extern prbar(); /* print thick or thin line or space */
extern prinit(), prfini(), prdown(); /* initialize, finish, move down */
/*
* These codes represent the 3-of-9 encoding. Note that there are exactly
* three 1-bits in each code. Those are the "thick" lines/spaces.
* The barcode alternates between lines and spaces - the codes below
* determine the width of each line or space, not whether it's a line
* or a space.
*/
static unsigned codes[] =
{ 0xc4, 0, 0, 0, 0xa8, 0x2a, 0, 0, 0, 0, 0, 0x8a, 0, 0x85, 0x184, 0xa2,
0x34, 0x121, 0x61, 0x160, 0x31, 0x130, 0x70, 0x25, 0x124, 0x64, 0, 0, 0, 0, 0, 0, 0,
0x109, 0x49, 0x148, 0x19, 0x118, 0x58, 0x0d, 0x10c, 0x4c, 0x1c,
0x103, 0x43, 0x142, 0x13, 0x112, 0x52, 7, 0x106, 0x46, 0x16, 0x181, 0x0c1,
0x1c0, 0x91, 0x190, 0x0d0
};
/*
* text[0] is printed on the bottom line of the label, after the barcode.
* text[1-10] is printed at the right of the barcode on each line 1-depth
*/
char *text[] = {"", "", "", "", "", "", "", "", "", "", ""};
bar(str)
char *str; /* string to be printed */
{
int i;
char *s;
lineno = 1;
for(i = depth; i--; prdown())
{ prinit(s = str);
barc(0x94); /* start code */
while(*s)
barc(codes[*s++ - ' ']);
barc(0x94); /* stop code */
}
prfini();
}
static barc(c)
{
int line; /* BOOL line/space */
unsigned mask;
for(line = 1, mask = 0x100; mask; mask >>= 1, line = 1 - line)
prbar(c & mask, line);
prbar(0, 0); /* finish each char with a thin space */
}